package com.redlight.base;

import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * Created by chao on 2019/1/9.
 */
public class DictUtils {
//    private static SysDictService sysDictService = (SysDictService)ContextHolder.getBean(SysDictService.class);
    public static final String CACHE_DICT_MAP = "dictMap";
    public static final String CACHE_DICT_TYPE = "dictType";

    public DictUtils() {
    }

//    public static List<String> getDictTypeList() {
//        List<String> dictTypeList = (List)EhCacheUtils.get("dictType");
//        if(null == dictTypeList) {
//            dictTypeList = sysDictService.findTypeList();
//            EhCacheUtils.put("dictType", dictTypeList);
//        }
//
//        return dictTypeList;
//    }

//    public static String getDictLabel(String value, String type, String defaultValue) {
//        if(StringUtils.isNotBlank(type) && StringUtils.isNotBlank(value)) {
//            Iterator var3 = getDictList(type).iterator();
//
//            while(var3.hasNext()) {
//                SysDict dict = (SysDict)var3.next();
//                if(value.equals(dict.getValue())) {
//                    return dict.getLabel();
//                }
//            }
//        }
//
//        return defaultValue;
//    }

//    public static String getDictLabels(String values, String type, String defaultValue) {
//        if(StringUtils.isNotBlank(type) && StringUtils.isNotBlank(values)) {
//            List<String> valueList = Lists.newArrayList();
//            String[] var4 = StringUtils.split(values, ",");
//            int var5 = var4.length;
//
//            for(int var6 = 0; var6 < var5; ++var6) {
//                String value = var4[var6];
//                valueList.add(getDictLabel(value, type, defaultValue));
//            }
//
//            return StringUtils.join(valueList, ",");
//        } else {
//            return defaultValue;
//        }
//    }

//    public static String getDictValue(String label, String type, String defaultLabel) {
//        if(StringUtils.isNotBlank(type) && StringUtils.isNotBlank(label)) {
//            Iterator var3 = getDictList(type).iterator();
//
//            while(var3.hasNext()) {
//                SysDict dict = (SysDict)var3.next();
//                if(type.equals(dict.getType()) && label.equals(dict.getLabel())) {
//                    return dict.getValue();
//                }
//            }
//        }
//
//        return defaultLabel;
//    }

//    public static List<SysDict> getDictList(String type) {
//        Map<String, List<SysDict>> dictMap = (Map)EhCacheUtils.get("dictMap");
//        if(null == dictMap) {
//            dictMap = Maps.newHashMap();
//        }
//
//        if(StringUtil.isNotBlank(type) && null == ((Map)dictMap).get(type)) {
//            Map<String, List<SysDict>> dictMapTmp = Maps.newHashMap();
//            List<SysDict> list = sysDictService.findDictList(type);
//            Iterator var4 = list.iterator();
//
//            while(var4.hasNext()) {
//                SysDict dict = (SysDict)var4.next();
//                List<SysDict> hasList = (List)dictMapTmp.get(dict.getType());
//                if(hasList != null) {
//                    hasList.add(dict);
//                } else {
//                    dictMapTmp.put(dict.getType(), Lists.newArrayList(new SysDict[]{dict}));
//                }
//            }
//
//            if(null == dictMapTmp.get(type)) {
//                dictMapTmp.put(type, new ArrayList());
//            }
//
//            ((Map)dictMap).putAll(dictMapTmp);
//            EhCacheUtils.put("dictMap", dictMap);
//        }
//
//        return StringUtil.isBlank(type)?CollectionUtil.toList(((Map)dictMap).values()):(List)((Map)dictMap).get(type);
//    }

//    public static String getDictListJson(String type) {
//        List<SysDict> list = getDictList(type);
//        return JsonUtil.toJson(list);
//    }

    public static Object getValue(Object obj, String filed) {
        try {
            Class clazz = obj.getClass();
            PropertyDescriptor pd = new PropertyDescriptor(filed, clazz);
            Method getMethod = pd.getReadMethod();
            if(pd != null) {
                Object o = getMethod.invoke(obj, new Object[0]);
                return o;
            }
        } catch (SecurityException var6) {
            var6.printStackTrace();
        } catch (IllegalArgumentException var7) {
            var7.printStackTrace();
        } catch (IntrospectionException var8) {
            var8.printStackTrace();
        } catch (IllegalAccessException var9) {
            var9.printStackTrace();
        } catch (InvocationTargetException var10) {
            var10.printStackTrace();
        }

        return null;
    }

    public static void removeCache() {
        EhCacheUtils.remove("dictMap");
        EhCacheUtils.remove("dictType");
    }
}
